﻿using System;
using System.Globalization;
using Persistence = Entersoft.Data.DotNetDAL.SQL.Persistence;

namespace BLL
{
    public class Tomas: Common
    {
        public static bool Grabar(Toma toma, ref string mensaje)
        {
            bool retorno;

            var objRp = new Entersoft.Data.DotNetResponse.SQL.Persistence { StoredProcedure = "SP_INS_TOMAS" };

            using (var objConn = new Persistence(true, ConnDB))
            {
                objRp.AddParametro(toma.IdCapturador);
                objRp.AddParametro(toma.UsuarioCapturador);
                objRp.AddParametro(toma.FechaHora);
                objRp.AddParametro(toma.Ubicacion);
                objRp.AddParametro(toma.Material);
                objRp.AddParametro(toma.Cantidad);
                objRp.AddParametro(null);
    
                objConn.ExecuteNonQuery(ref objRp);

                retorno = !objRp.TieneErrores;

                mensaje = objRp.TieneErrores ? objRp.Errores : objRp.Parametro[6].ToString();

                if (retorno)
                    objConn.Commit();
            }

            objRp.Dispose();

            return retorno;
        }
    }

    [Serializable]
    public class Toma
    {
        private string _idCapturador;
        private string _usuarioCapturador;
        private string _periodo;
        private string _bodega;
        private string _nroToma;
        private string _pasillo;
        private string _ubicacion;
        private string _material;
        private string _cantidad;
        private string _fechaHora;
        private string _correlativo;

        public string IdCapturador
        {
            get { return _idCapturador; }
            set { _idCapturador = value; }
        }

        public string UsuarioCapturador
        {
            get { return _usuarioCapturador; }
            set { _usuarioCapturador = value; }
        }

        public string Periodo
        {
            get { return _periodo; }
            set { _periodo = value; }
        }

        public int Bodega
        {
            get { return Convert.ToInt16(_bodega); } 
            set { _bodega = Convert.ToString(value); }
        }

        public int NroToma
        {
            get { return Convert.ToInt16(_nroToma); }
            set { _nroToma = Convert.ToString(value); }
        }

        public string Pasillo
        {
            get { return _pasillo; }
            set { _pasillo = value; }
        }

        public string Ubicacion
        {
            get { return _ubicacion; }
            set { _ubicacion = value; }
        }

        public string Material
        {
            get { return _material; }
            set { _material = value; }
        }

        public int Cantidad
        {
            get { return Convert.ToInt32(_cantidad); }
            set { _cantidad = Convert.ToString(value); }
        }

        public DateTime FechaHora
        {
            get { return DateTime.ParseExact(_fechaHora, "ddMMyyyyHHmmss", new CultureInfo("es-CL")); }
            set { _fechaHora = value.ToString("ddMMyyyyHHmmss"); }
        }

        public int Correlativo
        {
            get { return Convert.ToInt32(_correlativo); }
            set { _correlativo = Convert.ToString(value); }
        }
    }
}
